/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ac.persistence;
import ac.entities.Ubicacion;
import com.ibatis.sqlmap.client.SqlMapClient;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 * Gestiona la persistencia de ubicaciones dentro del acuario
 * @author prometheus
 */
public class PersistUbicacion {

    /**
     * Crea un nuevo registro de ubicación
     * @param u ubicación a insertar
     * @return true si la operación fue exitosa
     */
    public boolean insertUbicacion (Ubicacion u) {
        boolean resultado = false;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertUbicacion", u);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return resultado;
        }
    }


    /**
     * Busca todos los registros de Ubicacion de un tipo dado
     * @param tipo el tipo a buscar
     * @return las ubicaciones encontradas
     */
    public ArrayList buscarUbicacionPorTipo (String tipo) {
        ArrayList<Ubicacion> resultado = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            resultado = (ArrayList) sqlMap.queryForList("buscarUbicacionPorTipo", tipo);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return resultado;
        }
    }

    /**
     * Busca los hijos de una ubicación
     * @param idPadre id del padre del que se quieren los hijos
     * @return hijos de la ubicación buscada
     */
    public ArrayList buscarHijosUbicacion (int idPadre) {
        ArrayList<Ubicacion> resultado = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            resultado = (ArrayList) sqlMap.queryForList("buscarHijosUbicacion", idPadre);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return resultado;
        }
    }

}
